UT6 - Programación Orientada a Objetos
La Programación Orientada a Objetos (POO) es un paradigma que organiza el código en torno a objetos, en lugar de centrarse en funciones o procedimientos sueltos.
Cada objeto combina datos y comportamientos, imitando la forma en que se perciben los elementos del mundo real.
En lugar de escribir funciones independientes que manipulan datos, la POO agrupa ambos dentro de una clase, que actúa como un modelo o plantilla.
Las principales ventajas de este enfoque son:
- ✅ Mejora la organización y modularidad del código.
- ♻️ Facilita la reutilización mediante herencia y polimorfismo.
- 🧩 Promueve la legibilidad y el mantenimiento.
- 🔄 Permite modelar problemas complejos de forma más natural.
En la POO, un programa se construye a partir de objetos que interactúan entre sí.
Cada objeto pertenece a una clase, y cada clase define cómo se comportan esos objetos y qué información contienen.
Python es un lenguaje totalmente orientado a objetos, lo que significa que todo en él es un objeto: números, cadenas, listas, funciones e incluso las clases.
1️⃣ Clases y objetos: la base de la POO
En Python, todo gira en torno a las clases y objetos.
- Una clase es una plantilla que define cómo deben ser los objetos (qué datos y comportamientos tendrán).
- Un objeto es una instancia concreta de esa clase.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, soy {self.nombre}.")
# Crear un objeto (instancia)
p1 = Persona("Ana")
p1.saludar()
2️⃣ Principios fundamentales de la POO
Los cuatro pilares que sostienen este paradigma son:
| Descripción breve | Ejemplo conceptual | |
|---|---|---|
| Encapsulación | Protege los datos internos del objeto y controla cómo se accede a ellos. | Un coche oculta el motor, pero ofrece un pedal para acelerar. |
| Abstracción | Muestra solo lo esencial y oculta los detalles innecesarios. | Usar un mando a distancia sin conocer su circuito interno. |
| Herencia | Permite crear nuevas clases basadas en otras existentes. | Un “Perro” hereda de la clase “Animal”. |
| Polimorfismo | Objetos distintos pueden compartir el mismo método, pero comportarse de forma diferente. | “Pato” y “Gato” tienen ambos un método hablar(), pero cada uno lo implementa a su manera. |
3️⃣ Comparación: enfoque estructurado vs. POO
Veamos cómo se aborda un mismo problema en ambos paradigmas.
🟥 Estilo estructurado
def saludar(nombre):
print(f"Hola, {nombre}")
saludar("Ana")
🟩 Estilo orientado a objetos
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, soy {self.nombre}")
ana = Persona("Ana")
ana.saludar()
4️⃣ Qué aprenderás en este bloque
A lo largo de las siguientes secciones, se aprenderá a:
- Definir y utilizar clases y objetos en Python.
- Trabajar con atributos, métodos y constructores (
__init__). - Aplicar los principios de encapsulación, herencia y polimorfismo.
- Crear programas reales organizados en torno a objetos.
Cuando empieces a diseñar tus programas, piensa qué objetos existen en tu problema y qué saben hacer. Esa será la clave para estructurarlos correctamente.